package com.cuixichang.minimalism.transfer.dto;

import java.time.LocalDateTime;
import java.util.Map;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.util.Assert;
import com.cuixichang.minimalism.basal.core.BaseDTO;
import lombok.Data;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
 * 系統登录账户管理表对象实体
 *
 * @author cuixichang
 * @date 2024-12-22
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
public class ILoginDTO extends BaseDTO{
   /**
    * 登录账户名称
    */
    private String loginName;
   /**
    * 登录密码
    */
    private String loginPassword;
   /**
    * 加密盐
    */
    private String loginSalt;
   /**
    * 数据锁【0:可操作状态(默认);1:锁定数据状态】
    */
    private Boolean isLock;
   /**
    * 账户到期时间
    */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private LocalDateTime logoffTime;
   /**
    * 认证信息重置时间
    */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
    private LocalDateTime reAuthTime;
   /**
    * 数据分组ID
    */
    private String groupId;
   /**
    * 签名信息
    */
    private String moduleName;
    /**
    * 拓展字段信息
    */
    private Map<String, Object> expands;
    /**
    * 签名信息
    */
    private String signature;

    @Override
    public void check() {
        Assert.hasText(loginName,"登录账户名称不能为空");
        Assert.hasText(groupId,"数据分组ID不能为空");
        Assert.hasText(signature,"签名信息不能为空");
    }
}
